package br.com.rookgraph.utils;

import br.com.rookgraph.Graph;
import br.com.rookgraph.branchreduce.BranchReduce;
import br.com.rookgraph.branchreduce.BranchReducePlus;
import br.com.rookgraph.branchreduce.BranchReduceNotEstanque;
import br.com.rookgraph.heuristica.Alterado;
import br.com.rookgraph.heuristica.Normal;
import br.com.rookgraph.heuristica.NotEstanque;
import br.com.rookgraph.heuristica.Plus;
import br.com.rookgraph.heuristica.Plus2;

/**
 * Executa o algoritmo de BrancheReduce com as seguintes heuristicas:
 *     - Normal
 *     - Alterado
 *     - Plus
 * @author Luan Pontes
 *
 */
public class BranchReduceExecute {

	public static Graph normal(Graph original, Graph tree) {
		return new BranchReduce(original, tree, new Normal()).execute();
	}

	public static Graph alterado(Graph original, Graph tree) {
		return new BranchReduce(original, tree, new Alterado()).execute();
	}

	public static Graph plus(Graph original, Graph tree) {
		return new BranchReduce(original, tree, new Plus()).execute();
	}

	public static Graph plus2(Graph original, Graph tree) {
		return new BranchReducePlus(original, tree, new Plus2()).execute();
	}
	
	public static Graph notestanque(Graph original, Graph tree) {
		return new BranchReduceNotEstanque(original, tree, new NotEstanque()).execute();
	}
	
	
}
